#pragma once
#ifdef PLATFORM_WINDOWS
	#ifdef BUILD_DLL
		#define ENGINE_API __declspec(dllexport)
	#else
		#define ENGINE_API __declspec(dllimport)
	#endif // BUILD_DLL
#else
	#error UNSOURPT PLATFORM
#endif // PLATFORM_WINDOWS

#define ASSERT(x,...) { if(!(x)) { ENGINE_ERROR("Failed : {0}",__VA_ARGS__); __debugbreak();} }
#define BIND_EVENT_FN(fn) [this](auto&&... args) -> decltype(auto) { return this->fn(std::forward<decltype(args)>(args)...); }